package com.zzyl.nursing.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.zzyl.common.core.page.TableDataInfo;
import com.zzyl.nursing.domain.Reservation;

import java.util.Date;
import java.util.List;

public interface IReservationService extends IService<Reservation> {

    /** 查询当前用户当天取消预约的次数 */
    Integer getCancelledCountToday(Long userId);

    /** 查询指定日期各时间段的剩余预约次数 */
    List<Reservation> getRemainingCountByTime(Date date);

    /** 新增预约（含校验逻辑） */
    boolean createReservation(Reservation reservation, Long userId);

    /**
     * 分页查询用户的预约记录
     */
    TableDataInfo getUserReservationPage(Integer pageNum, Integer pageSize, Long userId, Reservation reservation);

    /** 取消预约（更新状态为“取消”） */
    boolean cancelReservation(Long id, Long userId);

    /** 定时任务：处理过期预约（状态改为“过期”） */
    void handleExpiredReservations();
}